Use of storage systems to store data has become widespread, and many store large amounts of data using multiple storage devices. Data stored at such storage systems may include user files, applications, application data and metadata that include information descriptive of the data. For purposes of storage efficiency, data is stored once and then referenced multiple times.
As the amount of data stored in the data storage systems increases, management of the data becomes more difficult. For example, a portion of the data may be logically replicated from the first storage system to the second storage system so that multiple copies of the data can be maintained as backups. With logical replication, the data and the references to the data can be sent in parallel. However, when the references to the data arrive before the actual data, existing technologies performs pulling and buffering techniques to replace the references with the actual data when the actual data arrives. Unfortunately, these pulling and buffering techniques used by the existing technologies have resulted in undesirable delays to the replication transfer time, thereby causing delay to the user to access the replicated data. Additionally, the existing pulling and buffering techniques have resulted in reduced efficiency of the CPU.